//曾凡诚、张译文
#include "grid.h"
#include "ui_grid.h"
#include "Code/Component/ComponentParam.h"

Grid::Grid(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Grid)
{
    ui->setupUi(this);
    setWindowTitle("电网属性"); // 设置窗口标题（匹配电网组件）
}

Grid::~Grid()
{
    delete ui;
}

// 获取电网功率（从UI的powerEdit控件读取并转换为double，与其他组件控件命名一致）
double Grid::getPower() const
{
    return ui->powerEdit->text().toDouble();
}


// 确定按钮：关闭对话框并返回成功状态（与柴油发电机交互逻辑一致）
void Grid::on_confirmBtn_clicked()
{
    accept(); // 关闭对话框，返回QDialog::Accepted
}

// 取消按钮：关闭对话框并返回失败状态（统一交互模式）
void Grid::on_cancelBtn_clicked()
{
    reject(); // 关闭对话框，返回QDialog::Rejected
}

// 按钮盒确认按钮（提交电网参数更新）
void Grid::on_buttonBox_accepted()
{
    ComponentParam param;
    param.id = 5; // 电网的唯一标识ID（按约定与其他组件区分：柴油发电机id=3、储能id=2）
    param.type = "电网"; // 明确组件类型为“电网”
    param.currentPower = this->getPower(); // 读取界面输入的电网功率

    // （可选）若需扩展电网专属参数（如输电损耗、电压等级），可补充：
    // param.efficiency = this->getEfficiency(); // 需ComponentParam类支持efficiency字段

    emit paramsUpdated(param); // 发射信号，传递更新后的电网参数
    accept(); // 关闭对话框

    // 调试输出（保持与柴油发电机一致的格式，便于日志查看）
    qDebug() << "emit paramsUpdated(param) [电网]";
    qDebug() << "id=" << param.id << ", type=" << param.type << ", currentPower=" << param.currentPower;
}
